package com.zyl.lock8;

import java.util.concurrent.TimeUnit;

/**
 * @author zhaoyl
 * @date 2024/5/15 19:56
 * @description 说明
 *synchronized修饰静态方法，会给类加锁
 */
public class Test3 {

    public static void main(String[] args) {
        //new两个对象,但是两个对象的模版只有一个,static锁的是class.
        Phone3 phone1 = new Phone3();
        Phone3 phone2 = new Phone3();
       //-------phone1和phone2是同一把锁-----------------
        //线程A打电话
        new Thread(()->{
            phone1.sendSms();//对象1
        },"线程A").start();
        try {
            TimeUnit.SECONDS.sleep(1);//睡2秒
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        //线程B发短信
        new Thread(()->{
            phone2.call();////对象2
        },"线程B").start();

    }
}

//Phone3唯一的一个class对象
class  Phone3 {

    //synchronized锁的是方法的调用者Phone
    //static 静态方法 类一加载  ,就有了Class 模版，锁的是class
    //同步锁;静态方法
    public static synchronized void sendSms() {
        System.out.println(Thread.currentThread().getName() + "发送短信");
    }

    //同步锁;静态方法
    public static synchronized void call() {
        System.out.println(Thread.currentThread().getName() + "打电话");
    }

}